/**
 * 修订记录：
 * No		日期						作者(操作内容)
 * 1.		2025年6月19日				805786(初始创建)	
 */
package com.lamect.common.utils;

import java.util.concurrent.ThreadLocalRandom;

/**
 * @ClassName：RandomUtils
 * @Description：TODO @Author：805786
 * @Date：2025年6月19日下午5:00:21
 */
public class RandomUtils {

	// 常见中文姓氏（前100个常见姓氏）
	private static final String[] SURNAMES = {
		"李", "王", "张", "刘", "陈", "杨", "赵", "黄", "周", "吴", "徐", "孙", "胡", "朱",
		"高", "林", "何", "郭", "马", "罗", "梁", "宋", "郑", "谢", "韩", "唐", "冯", "于", "董", "萧", "程", "曹", "袁", "邓", "许",
		"傅", "沈", "曾", "彭", "吕", "苏", "卢", "蒋", "蔡", "贾", "丁", "魏", "薛", "叶", "阎", "余", "潘", "杜", "戴", "夏", "钟",
		"汪", "田", "任", "姜", "范", "方", "石", "姚", "谭", "廖", "邹", "熊", "金", "陆", "郝", "孔", "白", "崔", "康", "毛", "邱",
		"秦", "江", "史", "顾", "侯", "邵", "孟", "龙", "万", "段", "雷", "钱", "汤", "尹", "黎", "易", "常", "武", "乔", "贺", "赖",
		"龚", "文"
	};

	// 常用称谓
	private static final String[] TITLES = { "先生", "女士" };

	// 中国大陆手机号开头号段
    private static final String[] MOBILE_PREFIXES = {
        "130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
        "145", "147", "149", "150", "151", "152", "153", "155", "156", "157",
        "158", "159", "165", "166", "167", "170", "171", "172", "173", "175",
        "176", "177", "178", "180", "181", "182", "183", "184", "185", "186",
        "187", "188", "189", "191", "198", "199"
    };
	
	// 私有构造方法防止实例化
	private RandomUtils() {
		throw new AssertionError("不能实例化RandomUtils工具类");
	}

	/**
	 * 随机生成一个姓氏
	 * 
	 * @return 随机中文姓氏
	 */
	public static String randomSurname() {
		return SURNAMES[ThreadLocalRandom.current().nextInt(SURNAMES.length)];
	}

	/**
	 * 随机生成一个称谓
	 * 
	 * @return "先生"或"女士"
	 */
	public static String randomTitle() {
		return TITLES[ThreadLocalRandom.current().nextInt(TITLES.length)];
	}

	/**
	 * 生成带称谓的随机姓名
	 * 
	 * @return 格式如"张先生"、"李女士"的字符串
	 */
	public static String randomSurnameWithTitle() {
		return randomSurname() + randomTitle();
	}
	
	/**
     * 生成随机中国大陆手机号
     * 
     * @return 11位手机号码字符串
     */
	public static String randomMobile() {
        ThreadLocalRandom random = ThreadLocalRandom.current();
        // 随机选择号段
        String prefix = MOBILE_PREFIXES[random.nextInt(MOBILE_PREFIXES.length)];
        // 生成后8位数字
        StringBuilder sb = new StringBuilder(prefix);
        for (int i = 0; i < 8; i++) {
            sb.append(random.nextInt(10));
        }
        return sb.toString();
    }

}
